package org.batatasframework.web.spi.security;

import java.security.Principal;

/**
 * <pre>
 * 用于处理当前使用者的身份，如果是匿名用户，也有对应的一个身份
 * 
 * 系统框架的许多的操作，都需要把当前操作者的身份信息传递到相应的处理器里
 * 所以这个接口是很基础的，也是必要的接口
 * 
 * 用户的身份只有两个信息，一个是用户的标示符，即唯一的Id，一个是用户的域范围(用户域这个与windows的域很像)
 * 域范围很重要，因为这些数据可能是你的数据，也可能是你们(公司、单位等)的数据，这样就可以按域来限制和物理层的
 * 数据分离。
 * 
 * 唯一的ID应该是系统生成的唯一标识，不能使用普通的用户名(因为可以支持手机登录、邮箱登记、第三方登录等)；
 * 注意也应尽量避免使用数据库自动生成的ID，虽然也是唯一可不好管理；建议使用随机生成的MD5码，这样可以全球范围内
 * 认为是唯一的，也就是这个用户是唯一的。
 * </pre>
 * 
 * <pre>
 * 框架除了要限制哪些资源(功能)能访问，哪些资源(功能)不能访问外，还要管理“去哪里”读取或查找这些资源；
 * 新的版本里，框架会根据策略来处理数据和文档资源等信息的存储，只有根据当前用户的身份，才能正确的加载
 * 到这些资源。
 * </pre>
 * 
 * <pre>
 * 注意：使用身份来限定用户的操作范围的时候，是无法限定基础数据库的；身份限定的数据仅限于业务数据
 * </pre>
 * 
 * @author jackson
 *
 */
public interface Identity extends Principal{

}
